package intro;

import java.util.Scanner;
import intro.node;

public class LinkedList {

    static node head = null ;
    static node tem = null ;
    static node tail = null ;

    public void addNode ( int data ) {
        node no = new node ( data ) ;
        if ( head == null ) {
            head = no ;
            return ;
        }
        tem = head ;
        while ( tem.next != null ) {
            tem = tem.next;
        }
        tem.next = no ;
    }

    public static void main(String[] args) {

        System.out.println("输入5个数字：");
        Scanner red = new Scanner(System.in) ;
        LinkedList l = new LinkedList() ;
        for ( int i = 0 ; i < 5 ; i ++ ) {
            int p = red.nextInt() ;
            l.addNode( p );
        }
        tail = tem ;

        System.out.println("输出这5个元素:");
        tem = head ;
        for ( int i = 0 ; i < 5 ; i ++ ) {
            System.out.print( tem.data + " " );
            tem = tem.next ;
        }

        System.out.println( "\n\n" + "查找第i个元素" );
        System.out.print("输入i：");
        int i = red.nextInt() ;
        tem = head ;
        for ( int j = 1 ; j < i ; j ++ ) {
            tem = tem.next ;
        }
        System.out.println("第" + i + "个元素是:" + tem.data );


        System.out.print( "\n" + "输入要插入的元素位置与元素为:");
        i = red.nextInt() ;
        int x = red.nextInt() ;
        node vtx = new node(x) ;
        tem = head ;
        for ( int j = 1 ; j < i - 1 ; j ++ ){
            tem = tem.next ;
        }
        vtx.next = tem.next ;
        tem.next = vtx ;
        System.out.println("输出插入后的元素:");
        tem = head ;
        for ( int j = 0 ; j < 6 ; j ++ ) {
            System.out.print( tem.data + " " );
            tem = tem.next ;
        }

        System.out.print( "\n\n" + "输入要删除的位置为:");
        i = red.nextInt() ;
        tem = head ;
        for ( int j = 1 ; j < i - 1 ; j ++ ){
            tem = tem.next ;
        }
        tem.next = tem.next.next ;
        System.out.println("输出删除后的元素:");
        tem = head ;
        for ( int j = 0 ; j < 5 ; j ++ ) {
            System.out.print( tem.data + " " );
            tem = tem.next ;
        }

        System.out.print("\n\n" + "计算链表长度为:");
        tem = head ;
        int len = 0 ;
        while ( tem != null ) {
            tem = tem.next ;
            len ++ ;
        }
        System.out.println( len + "\n" ) ;

        System.out.println("找出最大、最小的元素:");
        node max = new node(head.data) ;
        node min = new node(head.data) ;
        tem = head ;
        while ( tem != null ) {
            if ( max.data < tem.data ) {
                max = tem ;
            }
            if ( min.data > tem.data ) {
                min = tem ;
            }
            tem = tem.next ;
        }
        System.out.println("最大的为：" + max.data );
        System.out.println("最小的为：" + min.data );


    }
}
